//package com.du.web.websocket.controller;
//
//import cn.cycore.cystorage.sdk.CyStorage;
//import cn.cycore.cystorage.sdk.Options;
//import cn.cycore.cystorage.sdk.enums.ConverterType;
//import cn.cycore.cystorage.sdk.enums.Option;
//import cn.cycore.cystorage.sdk.models.*;
//import cn.hutool.core.io.FileUtil;
//import com.du.web.websocket.model.ResBean;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.HashMap;
//import java.util.UUID;
//
///**
// * @desc:
// * @author: shuangdu
// * @date: 2021/8/3
// * @since: 1.8
// */
//@Controller
//@RequestMapping(value = "file")
//@RequiredArgsConstructor
//@Slf4j
//public class FileController {
//
//    static {
////        CyStorage.setHost("test.cystorage.cycore.cn");
////        CyStorage.setAppKey("rrt");
////        CyStorage.setAppSecret("4dd4701b7b49e790519a3bb1c8e36a14");
//
//        CyStorage.setHost("ah.cystorage.ahedu.cn");
//        CyStorage.setAppKey("rrt");
//        CyStorage.setAppSecret("4dd4701b7b49e790519a3bb1c8e36a14");
//    }
//
//    @GetMapping(value = "index")
//    public String index() {
//        return "upload-cy";
//    }
//
//
//    @PostMapping(value = "upload")
//    @ResponseBody
//    public String upload(@RequestParam(name = "file") MultipartFile file) {
//        log.warn("接收到文件： {}, 大小：{} !", file.getName(), file.getSize());
//        return "ko";
//    }
//
//    /**
//     * MD5查重接口，用于秒传
//     *
//     * @param md5 md5
//     * @return 秒传结果
//     */
//    @PostMapping(path = "/check")
//    @ResponseBody
//    public ResBean<?> check(String md5) {
//        CheckInfo checkInfo = CyStorage.apis().check(md5);
//        if (checkInfo != null) {
//            return ResBean.ok(checkInfo);
//        }
//        return ResBean.error();
//    }
//
//    @PostMapping(path = "/prepare")
//    @ResponseBody
//    public ResBean<?> prepare(String extension,
//                                        Integer chunks,
//                                        Boolean uploadToThirdPartyStorage,
//                                        String storageSource) {
//        HashMap<String, Object> prepareParams = new HashMap<>();
//        prepareParams.put("filePath", Options.getOption(Option.APPKEY) + "/" + UUID.randomUUID() + "."
//                + extension);
//        prepareParams.put("forcedDownload", false);
//        if (chunks > 1) {
//            prepareParams.put("chunks", chunks);
//        }
//        PrepareInfo prepareInfo = CyStorage.apis().prepare(prepareParams);
////        CyStorage.apis().addPreview(prepareInfo.getContextId(), prepareInfo.getUrl() + "preview" + "." + extension);
////        CyStorage.apis().addThumbnail(prepareInfo.getContextId(), 200, 300, prepareInfo.getUrl() + "thumb" + "." + extension);
//        return ResBean.ok(prepareInfo);
//    }
//
//    @PostMapping(path = "/uploadFile")
//    @ResponseBody
//    public ResBean<?> uploadFile(MultipartFile file, String ext) {
//        try {
//            HashMap<String, Object> params = new HashMap<>();
//            //filePath需要以设置的appKey开头，文件真实扩展名结尾，中间建议用年/月/日/UUID等唯一性的路径
//            //两次若用同一个filePath上传，后一次上传的会覆盖前一次
//            params.put("filePath", Options.getOption(Option.APPKEY) + "/" + UUID.randomUUID() + "."
//                    + FileUtil.extName(file.getOriginalFilename()));
//            FileInfoWithToken fileInfo = CyStorage.apis().uploadFile(file.getInputStream(), params);
//            return ResBean.ok(fileInfo);
//        } catch (Exception e) {
//            return ResBean.error(e.getMessage());
//        }
//    }
//
//    @PostMapping(path = "/convertStatus")
//    @ResponseBody
//    public ResBean addThumbnail(String convId) {
//        log.info("{}", convId);
//        ConvertInfo convert = CyStorage.apis().getConvert(convId);
//        return ResBean.ok(convert);
//    }
//
//    @PostMapping(path = "/convert")
//    @ResponseBody
//    public ResBean addThumbnail(HttpServletRequest request, String contextId) {
////        FileInfo file = CyStorage.apis().getFile(contextId);
////
////        FileInfo fileInfo = CyStorage.apis().addThumbnail(contextId, 200, 200, file.getUrl());
//        HashMap<String, Object> convertParams = new HashMap<>();
//        convertParams.put("contextId", contextId);
////转换类型和转换参数参考媒体转换文档中的表格设置
//        convertParams.put("convType", ConverterType.IMG2IMG.getCode());
//        convertParams.put("convParams", "format=jpg");
//        convertParams.put("forcedDownload", false);
//        convertParams.put("convRole", "thumbnail");
//        convertParams.put("repeatConvert", true);
////如果有回调则设置回调信息
////        convertParams.put("convCallbackUrl", request.getRemoteHost());
////        convertParams.put("convCallbackParams", "action=/v1/file/convertEnd");
////        convertParams.put("convCallbackMethod", "POST");
//////回调参数用queryString拼接，回调结果除了基本文件信息外还包含该参数
////        convertParams.put("callbackParams", "param1=value1&param2=value2");
////调用转换，该接口是异步的，可以在未来时刻通过查询接口查到，或者通过回调的方式收取结果
//        ConvertsInfo convertsInfo = CyStorage.apis().startConvert(convertParams);
//        return ResBean.ok(convertsInfo);
//    }
//
//    @PostMapping(path = "/complete")
//    @ResponseBody
//    public ResBean<FileInfo> complete(String contextId) {
//        //step3 合成分片，此流程结束后会返回url，文件才能下载
//        FileInfo fileInfo = CyStorage.apis().complete(contextId);
//        return ResBean.ok(fileInfo);
//    }
//
//    @PostMapping(path = "/delete")
//    @ResponseBody
//    public ResBean<?> delete(String contextId) {
//        ActionInfo actionInfo = CyStorage.apis().deleteFile(contextId);
//        return ResBean.ok(actionInfo);
//    }
//
//}
